package com.sky.mapper;

import com.sky.annotation.AutoInsertFill;
import com.sky.annotation.AutoUpdateFill;
import com.sky.dto.DishDTO;
import com.sky.entity.Dish;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * @author liudo
 * @version 1.0
 * @project sky-take-out
 * @date 2024/2/4 11:06:56
 */
@Mapper
public interface DishMapper {
    /**
     * 选择计数
     *
     * @param dishQuery 菜式查询
     * @return {@link Integer}
     */
    Integer selectCount(Dish dishQuery);

    /**
     * 插入
     *
     * @param dish 碟
     */
    @AutoInsertFill
    void insert(Dish dish);

    /**
     * 选择列表
     *
     * @param dishQuery 菜式查询
     * @return {@link List}<{@link Dish}>
     */
    List<Dish> selectList(Dish dishQuery);

    /**
     * 按ID删除
     *
     * @param ids ids
     */
    void deleteByIds(List<Long> ids);

    /**
     * 选择按ID和状态计数
     *
     * @param ids    ids
     * @param status 地位
     * @return {@link Integer}
     */
    Integer selectCountByIdsAndStatus(List<Long> ids, Integer status);

    @Select("select id, name, category_id, price, image, description, status, create_time, update_time, create_user, update_user from dish where  id = #{id}")
    Dish selectById(Long id);

    /**
     * 按id更新
     *
     * @param dish 碟
     */
    @AutoUpdateFill
    void updateById(Dish dish);

    /**
     * 按类别id选择列表
     *
     * @param categoryId 类别id
     * @return {@link List}<{@link Dish}>
     */
    List<Dish> selectListByCategoryId(Long categoryId);
}
